package com.kebabeaters.nakebab.client.gin;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.gwtplatform.dispatch.client.gin.DispatchAsyncModule;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.kebabeaters.nakebab.client.presenter.AddRestaurantPresenter;
import com.kebabeaters.nakebab.client.presenter.ContentPresenter;
import com.kebabeaters.nakebab.client.presenter.HelloWorldPresenter;
import com.kebabeaters.nakebab.client.presenter.KebabRankingPresenter;
import com.kebabeaters.nakebab.client.presenter.RestaurantDetailsPresenter;
import com.kebabeaters.nakebab.client.presenter.widget.CircleLayoutPresenterWidget;
import com.kebabeaters.nakebab.client.presenter.TasterKebabRankingPresenter;

@GinModules({ DispatchAsyncModule.class, ClientModule.class })
public interface ClientGinjector extends Ginjector {

	EventBus getEventBus();

	PlaceManager getPlaceManager();

	AsyncProvider<HelloWorldPresenter> getHelloWorldPresenter();

	AsyncProvider<ContentPresenter> getContentPresenter();
	
	AsyncProvider<CircleLayoutPresenterWidget> getCircleLayoutPresenterWidget();

	AsyncProvider<KebabRankingPresenter> getKebabRankingPresenter();
	
	AsyncProvider<AddRestaurantPresenter> getAddRestaurantFormPresenter();

	AsyncProvider<TasterKebabRankingPresenter> getTasterKebabRankingPresenter();

	AsyncProvider<RestaurantDetailsPresenter> getRestaurantDetailsPresenter();
}
